iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
Modern Web

Google商家大解密就靠網頁設計來加成系列 第 22

[Day22] Spring Cloud 與 GCS

  • 分享至 

  • xImage
  •  

Spring Cloud 與 GCS

Spring Cloud 是建立在 Spring Boot之上,提供一套微服務的解決方法,他提供許多的工具讓使用者能快速搭建分布式系統,並做到常用的服務註冊、配置管理、融斷器、監控、負載均衡等功能,因為利用 Spring Boot的開發風格,因此在部署和設定上都相當淺顯易懂。

Spring Cloud的優點

1.  支持Rest
2.  高可用性、高融錯性
3.  學習曲線較低

核心成員

服務中心 Spring Cloud Netflix Eureka
融斷器 Spring Cloud Netflix Hystrix
服務閘道器 Spring Cloud Netflix Zuul
配置中心 Spring Cloud Config
服務跟蹤、日志收集 Spring Cloud Sleuth
訊息匯流排 Spring Cloud Bus
資料流 Spring Cloud Stream
批量任務 Spring Cloud Task
   

使用 Spring Cloud 連結 GCS

1.  在pom檔中引入spring-cloud的pom,並引入spring-cloud-gcp-starter-storage

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>spring-cloud-gcp-dependencies</artifactId>
            <version>${spring-cloud-gcp.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter-storage</artifactId>
    </dependency>
</dependencies>

2.  在application.properties中,新增GCS的bucket名稱、下載GCS的存取憑證、Oauth所需的相關scope

#spring cloud gcp
spring.cloud.gcp.project-id=your-GCP-bucket-name
spring.cloud.gcp.credentials.location=your-credential-path
spring.cloud.gcp.credentials.scopes=DEFAULT_SCOPES,www.googleapis.com/auth/devstorage.read_write

3.  Spring會自動生成GCS的Bean,使用Autowired就可以直接存取

@Autowired
private Storage storage;

4.  上傳單一檔案

BlobId id = BlobId.fromGsUtilUri("gs://yout-bucket-name/file-path");
BlobInfo info = BlobInfo.newBuilder(id).setContentType("your-file-mime-type").build();
storage.create(info, filebytes);

5.  取得單一檔案

BlobId id = BlobId.fromGsUtilUri("gs://yout-bucket-name/file-path");
Byte[] byteArray = storage.readAllBytes(id);

6.  刪除單一檔案

BlobId id = BlobId.fromGsUtilUri("gs://yout-bucket-name/file-path");
storage.delete(id);

7.  複製單一檔案

BlobId sourceId = BlobId.fromGsUtilUri("gs://yout-bucket-name/source-path");
BlobId targetId = BlobId.fromGsUtilUri("gs://yout-bucket-name/target-path");
CopyRequest request = CopyRequest.newBuilder().setSource(sourceId).setTarget(targetId).build();
CopyWriter copyWriter = storage.copy(request);
while (!copyWriter.isDone()) {
    copyWriter.copyChunk();
}
copyWriter.getResult();

上一篇
[Day21]MyBatis簡介
下一篇
[Day23] Lombok 簡介
系列文
Google商家大解密就靠網頁設計來加成30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言